#ifndef M_MATERIAL
#define M_MATERIAL
#include<memory>
#include"../BxDF/bsdf.h"

using namespace std;


struct SurfaceInteraction {
	P3 its_pt;
	P3 n;
	P3 t = P3(0., 0., 0.); // T of TBN
	Float u = 0, v = 0;
	Spectrum emission;
	void* pObj = NULL;
};

class Material
{
public:
	virtual shared_ptr<BSDF> createBSDF(const SurfaceInteraction* si, TransportMode mode) = 0;
};
#endif // !M_MATERIAL
